#pragma once 

#include "clientApdu.hpp"

class SecurityRequestApdu : public ClientApdu {
private:
    static inline const ByteStream randomNum = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
public:
    SecurityRequestApdu(const ClientApdu &apdu) {

        auto context = apdu.frame();

        _stream << static_cast<uint8_t>(SecurityApduType::SECURITY_REQUEST) // 安全请求
                << 0x00                                                     // 明文数据单元
                << static_cast<uint8_t>(context.size())                     // 明文数据长度
                << context                                                  // 明文
                << 0x01                                                     // 数据验证单元 随机数
                << static_cast<uint8_t>(randomNum.length())                 // 随机数的长度
                << randomNum                                                // 随机数
        ;  
    }

    SecurityRequestApdu(const ByteStream &b) { _stream = b; }

};




